草庐IT

Java HashMap 调整大小

全部标签

c++ - vector 无效分配大小

当我尝试创建并调整一个vector以容纳最大数量的项目时(vector::max_size()),我在运行时遇到调试错误:"Invalidallocationsize:429467292"我想知道为什么你不能调整它的大小,如果max_size()应该返回vector中项目的最大数量......vectorvc;vc.resize(vc.max_size());我还尝试在VS2010中启用LARGADRESSAWARE:On,但这没有帮助。想知道这是否是正确的thoguth...有人知道吗? 最佳答案 max_size()是vecto

c++ - 从套接字接收前几个字节以确定缓冲区大小

我正在用c++使用TCP/IP和sockets编写一个分布式系统。对于我的每条消息,我需要接收前5个字节才能知道传入消息的完整长度。执行此操作的最佳方法是什么?recv()只有5个字节,然后再次recv()。如果我选择这个,假设我会在recv中得到0或5个字节(也就是不写一个循环来继续尝试)是否安全?使用MSG_PEEKrecv()一些较大的缓冲区大小,然后读取前5个字节并分配最终缓冲区。 最佳答案 您不需要知道任何事情。TCP是一种流协议(protocol),在任何给定时刻,您可以获得少至一个字节或多至数兆字节的数据。使用TCP套

c++ - STL 堆栈对象的大小限制

std::stack的大小有限制吗??我正在使用std::stack>作为我的堆栈,当条目数超过大约100万时,我会收到运行时错误。这是由于std::stack的大小限制造成的吗?? 最佳答案 std::stack是一个容器适配器。它只是一些其他容器的前端,这使它看起来像一个堆栈。考虑一下std::vector如果替换名称push可以像堆栈一样对待与push_back和名字pop与pop_back.因此,任何大小限制或类似内容都将是后备容器的结果,而不是std::stack。.std::stack的默认支持容器是std::deque

c++ - Qt 从文件中打开图像 - 如何知道图像大小

我正在使用QFileDialog获取图像文件。图像可以采用不同的标准图像文件扩展名。如何获取图像大小(宽度和高度)? 最佳答案 如果只需要图片的大小,而不需要图片本身,最好使用QImageReader。如wiki中所述,并非所有图像数据都已加载。这个过程应该快得多:QImageReaderreader("image.png");QSizesizeOfImage=reader.size();intheight=sizeOfImage.height();intwidth=sizeOfImage.width();

c++ - 为什么在虚拟继承的情况下类的大小更大?

虚拟基类是一种在使用多重继承时防止给定类的多个实例出现在继承层次结构中的方法。然后对于下面的类classlevel0{inta;public:level0();};classlevel10:virtualpubliclevel0{intb;public:level10();};classlevel11:virtualpubliclevel0{intc;public:level11();};classlevel2:publiclevel10,publiclevel11{intd;public:level2();};我得到了以下类(class)规模sizeoflevel04sizeofle

c++ - 虚拟继承中类的大小

使用虚拟继承时类的大小如下..ABase=4(sizeofimem)BBase=12(sizeofimem+ABase+VBase_ptr)CBase=12(sizeofimem+ABase+VBase_ptr)这是有道理的,但我不明白为什么ABCDerived的大小是24。classABase{intiMem;};classBBase:publicvirtualABase{intiMem;};classCBase:publicvirtualABase{intiMem;};classABCDerived:publicBBase,publicCBase{intiMem;};

c++ - 不仅性能而且内存大小的内存对齐优化

我们知道当你这样定义A时,A的大小是不同的:classA{shorta;doubleb;shortc;};或者像这样classA{shorta;shortc;doubleb;};我假设我们正在为32位操作系统编译并且我们已经告诉编译器对齐到32位。编译器是否真的很难通过重新排序定义来获得最小大小,同时实现相同的性能? 最佳答案 这太难了。结构特别需要按照与结构定义完全相同的顺序对字段进行排序。这个要求可能是对Pascal没有这样的要求并导致令人惊讶的结果的react。无论如何,并非所有CPU架构都需要对齐或填充。在大多数情况下,它会

c++ - 类的大小与封闭模板类的大小

考虑下面的代码:classFoo{...};templateclassBar{Tt;};是否保证sizeof(Foo)==sizeof(Bar)总是评估为true跨任何标准C++编译器?是否存在上述条件永远不会成立的情况? 最佳答案 我不相信标准会做出这种保证-实现可以在Bar的末尾自由添加填充。但很难理解为什么任何真正的实现都会在Bar而不是Foo的末尾添加填充。除非,比方说,Foo被明确指定了一些非默认对齐方式(例如字节对齐);Bar将被填充到默认对齐方式。 关于c++-类的大小与封

c++ - 获取 Clang 中变量的大小

使用Clang库,是否有一些可用的方法来获取变量的大小(就像我在常规C/C++程序中使用sizeof()一样?我能够(这就是我想做的)发现VarDecl,但目前我仍然无法在Clang命名空间中找到任何方法来获取我的var的大小发现了当前的VarDecl 最佳答案 类型的大小信息存储在与给定类型关联的TypeInfo中。您可以通过getTypeInfo函数从ASTContext中获取对应的FieldInfo对。该对的第一个元素是类型的大小(以位为单位)。第二个元素是以位为单位的类型对齐。boolVisitVarDecl(VarDecl

C++ 指定结构的实际大小

我遇到了C#和C++之间的互操作问题,我通过在native代码和托管代码中定义的结构在我的应用程序的两个“端”之间共享内存。native端的结构定义如下:#pragmapack(push,1)structRayTestCollisionDesc{btVector3hitPosition;btRigidBody*hitBody;RayTestCollisionDesc(btRigidBody*body,btVector3&position):hitBody(body),hitPosition(position){}};#pragmapack(pop)并且在托管(C#)端定义了一个类似的结